#include "chooselevelscene.h"
#include <QMenuBar>
#include <QPainter>
#include <QSound>

ChooseLevelScene::ChooseLevelScene(QWidget *parent) : QMainWindow(parent)
{
    //设置窗口固定大小
    this->setFixedSize(320,588);
    //设置图标
    this->setWindowIcon(QPixmap(":/res/Coin0001.png"));
    //设置标题
    this->setWindowTitle("选择关卡");

    //创建菜单栏
    QMenuBar* bar = this->menuBar();
    this->setMenuBar(bar);
    //创建开始菜单
    QMenu* startMenu = bar->addMenu("开始");
    //创建按钮菜单项
    QAction* quitAction = startMenu->addAction("退出");
    //点击退出 退出游戏
    connect(quitAction,&QAction::triggered,[=](){
        this->close();
    });

    //选择关卡按钮音效
    QSound *chooseSound = new QSound(":/res/TapButtonSound.wav",this);
    //返回按钮音效
    QSound *backSound = new QSound(":/res/BackButtonSound.wav",this);

    //返回按钮
    MyPushButton * backBtn = new MyPushButton(":/res/BackButton.png",":/res/BackButtonSelected.png");
    backBtn->setParent(this);
    backBtn->move((this->width() - backBtn->width()-5),(this->height() - backBtn->height()-10));

    //返回按钮功能实现
    connect(backBtn,&MyPushButton::clicked,[=](){
        QTimer::singleShot(500,this,[=](){
            backSound->play();
            this->hide();
            //触发自定义信号,关闭自身,该信号写到signals下做声明
            emit this->chooseSceneBack();
        });
    });


    //创建关卡按钮
    for(int i=0;i<20;i++)
    {
        MyPushButton* menuBtn = new MyPushButton(":/res/LevelIcon.png");
        menuBtn->setParent(this);
        menuBtn->move(25+(i%4)*70,130+(i/4)*70);

        //监听选择关卡按钮的信号槽
        connect(menuBtn,&MyPushButton::clicked,[=](){
            QString str = QString("您选择的是第 %1 关 ").arg( i + 1);
            chooseSound->play();
            //进入到游戏场景
            if(pScene==nullptr)//游戏场景最好不复用,直接移除创建新的场景
            {
                this->hide();//将选关场景隐藏掉
                pScene = new PlayScene(i+1);//创建游戏场景
                pScene->show();//显示游戏场景

                //设置游戏情景的初始位置
                pScene->setGeometry(this->geometry());

                connect(pScene,&PlayScene::chooseSceneBack,[=](){
                                    this->setGeometry(pScene->geometry());
                                    this->show();
                                    delete pScene;
                                    pScene = nullptr;
                });
            }
        });


        //按钮上显示的文字
        QLabel* label = new QLabel;
        label->setParent(this);
        label->setFixedSize(menuBtn->width(),menuBtn->height());
        label->setText(QString::number(i+1));
        label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//设置居中
        label->move(25+(i%4)*70,130+(i/4)*70);
        label->setAttribute(Qt::WA_TransparentForMouseEvents,true);//鼠标事件穿透
    }
}

void ChooseLevelScene::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(":/res/OtherSceneBg.png");
    painter.drawPixmap(0,0,this->width(),this->height(),pix);

    //加载标题
    pix.load(":/res/Title.png");
    painter.drawPixmap((this->width()-pix.width())*0.5,30,pix.width(),pix.height(),pix);

}
